package cn.iocoder.yudao.module.crm.service.pricetemplate;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.crm.controller.admin.pricetemplate.vo.PriceTemplatePageReqVO;
import cn.iocoder.yudao.module.crm.controller.admin.pricetemplate.vo.PriceTemplateSaveReqVO;
import cn.iocoder.yudao.module.crm.dal.dataobject.pricetemplate.PriceTemplateDO;
import cn.iocoder.yudao.module.crm.dal.mysql.pricetemplate.PriceTemplateMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;

/**
 * 船公司收费报价模版 Service 实现类
 *
 * @author 芋道源码
 */
@Service
@Validated
public class PriceTemplateServiceImpl implements PriceTemplateService {

    @Resource
    private PriceTemplateMapper priceTemplateMapper;

    @Override
    public Long createPriceTemplate(PriceTemplateSaveReqVO createReqVO) {
        // 插入
        PriceTemplateDO priceTemplate = BeanUtils.toBean(createReqVO, PriceTemplateDO.class);
        priceTemplateMapper.insert(priceTemplate);
        // 返回
        return priceTemplate.getId();
    }

    @Override
    public void updatePriceTemplate(PriceTemplateSaveReqVO updateReqVO) {
        // 校验存在
        validatePriceTemplateExists(updateReqVO.getId());
        // 更新
        PriceTemplateDO updateObj = BeanUtils.toBean(updateReqVO, PriceTemplateDO.class);
        priceTemplateMapper.updateById(updateObj);
    }

    @Override
    public void deletePriceTemplate(Long id) {
        // 校验存在
        validatePriceTemplateExists(id);
        // 删除
        priceTemplateMapper.deleteById(id);
    }

    private void validatePriceTemplateExists(Long id) {
        if (priceTemplateMapper.selectById(id) == null) {
            //throw exception(PRICE_TEMPLATE_NOT_EXISTS);
        }
    }

    @Override
    public PriceTemplateDO getPriceTemplate(Long id) {
        return priceTemplateMapper.selectById(id);
    }

    @Override
    public PageResult<PriceTemplateDO> getPriceTemplatePage(PriceTemplatePageReqVO pageReqVO) {
        return priceTemplateMapper.selectPage(pageReqVO);
    }

}
